﻿using System;
using System.Drawing;

namespace Rsdn.Janus.CoreServices.NavigationTree
{
    /// <summary>
    /// описание главных веток дерева навигации
    /// </summary>
    public interface INavigationTreeItemInfo
    {
        /// <summary>
        /// Возвращает id расширения.
        /// должно быть уникальным в диапазоне от 0 до 0xFFFF
        /// </summary>
        /// <value>The id.</value>
        int Id { get; }

        /// <summary>
        /// Возвращает уникальный текстовый ключ
        /// обычно GetType().Name
        /// </summary>
        /// <value>уникальный текстовый ключ</value>
        string ItemKey { get; }

        /// <summary>
        /// Возвращает позицию виртуального форума в списке дерева.
        /// </summary>
        /// <value>Позицию виртуального форума в списке дерева.</value>
        int PositionOrder { get; }
        //string Command { get; }

        /// <summary>
        /// Возвращает делегат/функцию для выдачи имени виртуального форума
        /// </summary>
        /// <value>Делегат/функция для выдачи имени виртуального форума</value>
        Func<string> DisplayNameFunc { get; }

        /// <summary>
        /// Возвращает делегат/функцию для выдачи дополнительной информации
        /// пока не используется
        /// </summary>
        /// <value>Делегат/функция для выдачи дополнительная информации</value>
        Func<string> AdditionalInfo { get; }

        /// <summary>
        /// Возвращает возможную иконку виртуального форума
        /// пока не используется
        /// </summary>
        /// <value>Иконка виртуального форума</value>
        Image ItemImage { get; }

        /// <summary>
        /// Возвращает имя контекстного меню
        /// пока не используется
        /// </summary>
        /// <value>имя контекстного меню</value>
        string ContextMenuName { get; }
    }
}